package com.xiaochi.oss.config;

import com.xiaochi.oss.adapter.StorageAdapter;
import com.xiaochi.oss.adapter.AliStroageAdapter;
import com.xiaochi.oss.adapter.MinioStorageAdapter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 文件存储config
 * @author zqx
 * @since 2024/8/22
 */
@Configuration
@RefreshScope
public class StorageConfig {

    @Value("${storage.service.type}")
    private String storageType;

    //todo 这里可以使用list和map的注入
    @Bean
    @RefreshScope // todo 这个注解可以解决nacos配置刷新的问题 只要storageType变化就会重新加载bean
    public StorageAdapter storageService() {
        if("minio".equals(storageType)){
            return new MinioStorageAdapter();
        }else if ("aliyun".equals(storageType)){
            return new AliStroageAdapter();
        }else {
            //todo 可以看看这个异常类和其他的有什么区别
            throw new IllegalArgumentException("未找到对应的文件存储处理器");
        }
    }
}
